Тут вже є відповіді на це питання: Змінити рядок у Python (29 відповідей) Закрито 4 роки тому. Я намагаюся змінити рядок назад, використовуючи код нижче, але результуюче значення зворотного списку - None. Код: str_a = 'Це заважає' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = '' .join (rev_word) Він повертає TypeError. Чому?
2021-01-15 08:11:26
.reverse () повертає None. Тому вам не слід призначати його змінній. Використовуйте замість цього: stra = 'Це рядок' revword = stra.split () revword.reverse () revword = ''. приєднатися (revword) Я запустив код на IDEOne для вас, щоб ви могли бачити результат. (Також зверніть увагу, що на виході є stringaisThis; ви можете замість цього використовувати '' .join (revword) з пробілом.) Також зауважте, що метод, який ви надали, змінює лише слова, а не текст. @ ron.rothman надав посилання, де описано, як повністю змінити рядок. | Це мій улюблений спосіб змінити рядок: stra = "Це рядок" revword = stra [:: - 1] print (revword) # "gnirts a si sihT або, якщо ви хочете змінити порядок слів: revword = "" .join (stra.split () [:: - 1]) print (revword) # "рядок a це" :) | Різні розвороти на рядку: instring = 'Це рядок' reversedstring = instring [:: - 1] print reversedstring # gnirts a si sihT wordsreversed = '' .join (слово [:: - 1] для слова в instring.split ()) надрукувати слова reversed # sihT si a gnirts revwordorder = '' .join (слово в слово в instring.split () [:: - 1]) print revwordorder # string a is This revwordandorder = '' .join (слово [:: - 1] для слова в instring.split () [:: - 1]) print revwordandorder # gnirts a si sihT | Для подальшого посилання, коли об’єкт має такий метод, як [] .reverse (), він, як правило, виконує цю дію над об’єктом (тобто список сортується і нічого не повертає, None) на відміну від вбудованих функцій, таких як sorted, які виконують дію на об'єкт і повертає значення (тобто відсортований список) | >>> s = 'це рядок' >>> s [:: - 1] 'gnirts a si siht' >>> '' .join (стор. назад) 'gnirts a si siht' | Цикл for повторює рядок від кінця (остання буква) до початку (перша буква) >>> s = 'Ви можете спробувати і це:]' >>> rev = '' >>> для i в діапазоні (len (s) - 1, -1, -1): ... rev + = s [i] >>> вип ']: oot siht yrt nac uoY' | На основі коментарів та інших відповідей: str_a = 'це рядок' rev_word = '' .join (зворотний (str_a.split ())) Прив'язка методів все-таки працює в Python ... | Зворот списку можна зробити, використовуючи більше одного способу. Як згадувалось у попередніх відповідях, два дуже відомі, один із функцією reverse () та два із функцією нарізки. Я даю трохи розуміння, якому з них нам слід віддати перевагу. Ми повинні завжди використовувати функцію reverse () для сторнування списку Python. Дві причини, одна розворот на місці і дві швидше, ніж інші. У мене є кілька цифр, які підтверджують мою відповідь, У [15]: len (l) Вихід [15]: 1000 У [16]:% timeit -n1 l.reverse () 1 петля, найкраще 3: 7,87 мкс на петлю У [17]:% timeit -n1 l [:: - 1] 1 петля, найкраще 3: 10 мкс на петлю Для 1000 цілочисельних списків функція reverse () виконується краще порівняно з нарізанням. | Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегом python, або задайте власні запитання.